1. Technical Field
The present invention relates in general to a system and method for dynamically partitioning an application across processing elements in a heterogeneous processing environment. More particularly, the present invention relates to a system and method that determine when a process should run on a particular processing environment and transfers a process from one processing environment to another.
2. Description of the Related Art
Computing systems comprising a multiplicity of heterogeneous processors are becoming increasingly popular. In these environments, one or more general purpose processors work in conjunction with one or more special purpose processors. Typically, since they have different characteristics, the general purpose processors use a different instruction set architecture (ISA) than those used by the special purpose or application specific processors. Having different processing characteristics and ISAs lends each processor type to efficiently performing different types of tasks.
Because of the different characteristics of the processors, this heterogeneous environment is attractive to a variety of environments, such as multimedia, gaming, and numeric intensive application environments. In this environment, a program can have multiple threads. Some of these threads can execute on the general purpose processors and other threads can execute on the special purpose processors. A challenge, however, is that resource availability is not often known until an application is running. Therefore, it is often difficult to predetermine which environment should execute a particular thread, or “partition.” If the programmer hard codes various partitions to execute on the special purpose processors and the availability of the special purpose processors is constrained, then program performance may be impacted. Conversely, if the programmer hard codes partitions to execute on the general purpose processor, this processor may be over utilized and perform poorly.
What is needed, therefore, is a system and method that dynamically partitions an application between general purpose processors and special purpose processors. Furthermore, what is needed is a system and method that monitors the application's performance and dynamically re-partitions the application based on predefined criteria, or metrics.